Self-adjusting control loop

ABSTRACT

In one embodiment, a method includes monitoring, by a control loop including a processor and a memory, a first environment. The control loop includes one or more predetermined control loop parameters. The method also includes receiving, by the control loop and in response to monitoring the first environment, first data from the first environment and receiving, by the control loop, information from an adaptation control loop. The method also includes determining, by the control loop, to automatically adjust at least one of the one or more predetermined control loop parameters based at least in part on the information received from the adaptation control loop and automatically adjusting, by the control loop, the one or more predetermined control loop parameters. The method further includes determining, by the control loop, to initiate an action based on the first data collected from the first environment and the one or more adjusted control loop parameters.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/935,748 filed on Jul. 22, 2020, which is a continuation of U.S.patent application Ser. No. 16/028,227 filed Jul. 5, 2018, now U.S. Pat.No. 10,764,113. The contents of each of the foregoing are herebyincorporated by reference into this application as if set forth hereinin full.

FIELD OF THE DISCLOSURE

This disclosure generally relates to a control loop, and morespecifically to a self-adjusting control loop.

BACKGROUND

Control loops are used to measure and adjust a variable that controls anindividual process. For example, a control loop may measure and adjust agiven variable of a network-based service. Control loops use policiesthat are configured to determine their behavior. Human operators canchange these policies, but they are otherwise static.

BRIEF DESCRIPTION OF THE DRAWINGS

To assist in understanding the present disclosure, reference is now madeto the following description taken in conjunction with the accompanyingdrawings, in which:

FIG. 1A illustrates an example system for adjusting a control loop;

FIG. 1B illustrates additional details of the system of FIG. 1A;

FIG. 2 illustrates example control loop team modules that may be used bythe system of FIGS. 1A and 1B;

FIG. 3 illustrates an example method for adjusting a control loop; and

FIG. 4 illustrates an example computer system that may be used by thesystems and methods described herein.

DETAILED DESCRIPTION

According to an embodiment, a method includes monitoring, by a controlloop including a processor and a memory, a first environment. Thecontrol loop includes one or more predetermined control loop parameters.The method also includes receiving, by the control loop and in responseto monitoring the first environment, first data from the firstenvironment and receiving, by the control loop, information from anadaptation control loop. The information is based on one or morepredetermined adaptation policies of the adaptation control loop andsecond data received by the adaption control loop from a secondenvironment. The method also includes determining, by the control loop,to automatically adjust at least one of the one or more predeterminedcontrol loop parameters based at least in pan on the informationreceived from the adaptation control loop. The method further includesautomatically adjusting, by the control loop, the one or morepredetermined control loop parameters and determining, by the controlloop, to initiate an action based on the first data collected from thefirst environment and the one or more adjusted control loop parameters.

According to another embodiment, one or more computer-readablenon-transitory storage media embodies software that is executable tomonitor, by a control loop including a processor and a memory, a firstenvironment. The control loop includes one or more predetermined controlloop parameters. The software is further executable to receive, by thecontrol loop and in response to monitoring the first environment, firstdata from the first environment and receive, by the control loop,information from an adaptation control loop. The information is based onone or more predetermined adaptation policies of the adaptation controlloop and second data received by the adaption control loop from a secondenvironment. The software is further executable to determine, by thecontrol loop, to automatically adjust at least one of the one or morepredetermined control loop parameters based at least in part on theinformation received from the adaptation control loop. The software isfurther executable to automatically adjust, by the control loop, the oneor more predetermined control loop parameters and determine, by thecontrol loop, to initiate an action based on the first data collectedfront the first environment and the one or more adjusted control loopparameters.

According to yet another embodiment, a system includes one or moreprocessors and a memory coupled to the processors comprisinginstructions executable by the processors to monitor, by a control loop,a first environment. The control loop includes one or more predeterminedcontrol loop parameters. The instructions are further executable toreceive, by the control loop and in response to monitoring the firstenvironment, first data from the first environment and receive, by thecontrol loop, information from an adaptation control loop. Theinformation is based on one or more predetermined adaptation policies ofthe adaptation control loop and second data received by the adaptioncontrol loop from a second environment. The instructions are furtherexecutable to determine, by the control loop, to automatically adjust atleast one of the one or more predetermined control loop parameters basedat least in part on the information received from the adaptation controlloop. The instructions are further executable to automatically adjust,by the control loop, the one or more predetermined control loopparameters and determine, by the control loop, to initiate an actionbased on the first data collected from the first environment and the oneor more adjusted control loop parameters.

A technical advantage of this disclosure is providing the capability toself-adjust a basic control loop's behavior through a high-leveladaptation (e.g., external monitoring, analysis, decision making, andadjustment) structure without redesigning the control loop. Anothertechnical advantage includes the ability of the control loop to adaptitself to changes in its environment, which avoids nonsensical behaviorand enhances the safety of a basic control loop. As another technicaladvantage, a self-adjusting control loop increases the certainty thatthe control loop is performing its intended function Providing theability to self-adjust a control loop enhances the case and speed ofpractical control loop design since control loop designers can accept amuch simpler basic design when taking advantage of the adaptiveself-adjustment capability. The normal concerns of the control loopdesigners to understand the operating environment of the control loopare considerably reduced, which also improves time-to-market for controlloop automation.

A basic control loop is a single unit of automation that may includecollecting data, analyzing the data, determining an action to be takenbased on the analysis, and taking that action to effect a changeexternal to the control loop. An adaptive self-adjusting control loop isa control loop that can monitor an environment external to itself. Theself-adjusting control loop may analyze environmental changes, decidewhat self-adjustments would be beneficial, and then perform thoseself-adjustments.

Control loops such as those found in Open Network Automation Platform(ONAP) use policies that are configured to determine their behavior.These policies can be changed by human operators when desired, but theyare otherwise static. For example, a control loop may monitor a routerof a virtual network function (VNF). The control loop may determine,based on predetermined policies, that the router is heavily loaded. Inthe event the router is heavily loaded, the control loop may initiate anaction to shut down the router, which may negatively affect operation ofother components of the VNF environment. Human operators can manuallychange and/or update the predetermined policies, but this process islabor, cost, and time intensive.

Rather than human operators deciding to change and/or update existingcontrol loop policies, a self-adjusting control loop can react tochanging conditions by updating its own behavior as needed. Conditionsmonitored may include global conditions, local conditions, messages orevents, and internal operating conditions. The self-adjusting controlloop may monitor any specified conditions and adjust its own policies tomodify its own behavior. The self-adjusting control loop may use specialpre-specified adaptation policies to determine actions to take to modifyits own behavior. Actions that can be specified in such adaptationpolicies may include changing a named control loop policy set to anothernamed control loop policy set, changing control loop policy parametersor values (e.g., a threshold), and requesting analysis to determine whatchanges to make.

FIGS. 1A through 4 show example systems and methods for adjusting acontrol loop. In particular, FIG. 1A shows an example system foradjusting a control loop and FIG. 1B shows additional details of thesystem of FIG. 1A. FIG. 2 shows control loop team modules that may beused by the system of FIGS. 1A and 1B. FIG. 3 shows an example methodfor adjusting a control loop FIG. 4 shows an example computer systemthat may be used by the systems and methods described herein.

FIG. 1A illustrates an example system 100 for adjusting a control loop.System 100 of FIG. 1A includes a network 110, a first environment 112, asecond environment 114, a control loop 120, an adaptation control loop140, control loop parameters 164, adjusted control loop parameters 168,adaptation parameters 184, and recommended adjustments 188 Network 110,first environment 112, second environment 114, control loop 120,adaptation control loop 140, control loop parameters 164, adjustedcontrol loop parameters 168, adaptation parameters 184, and recommendedadjustments 188 may be associated with an entity 105. Network 110 may bea private network that connects components of entity 105.

Control loop 120 is a segment of a process control system. Physicalcomponents of control loop 120 (e.g., a controller) may automaticallycontrol a process. Control loop 120 may be a single unit of automationthat includes data collection, analysis of the data, determination of anaction to be taken based on the analysts, and initiation of that action.Control loop 120 monitors first environment 112. Control loop 120 maycollect data from first environment 112, analyze the data collected fromfirst environment 112 based on one or more control loop parameters 164,determine an action to be taken based on the analysis of the datacollected from first environment 112, and initiate the determinedaction. First environment 112 may be a server hosted by a cloudcomputing platform, and control loop parameters 164 may be policiesassociated with the operation of the server hosted by the cloudcomputing platform. Control loop 120 may receive recommended adjustments188 for control loop parameters 164 from adaptation control loop 140 andadjust control loop parameters 164 to create adjusted control loopparameters 168.

Adaptation control loop 140 monitors an environment external to theenvironment monitored by control loop 120. Physical components ofadaptation control loop 140 (e.g., a controller) may automaticallycontrol a process. Adaptation control loop 140 may monitor secondenvironment 114, collect data from second environment 114, analyze thedata collected from second environment 114 based on one or moreadaptation parameters 184, and recommend adjustments 188 to be made tocontrol loop 120 based on the analysis of the data collected from secondenvironment 114. Second environment 114 may be the security of a cloudcomputing platform that hosts a server of first environment 112, andadaption parameters 184 may be policies associated with the security ofthe cloud computing platform. Adaptation control loop 140 may bedeactivated at any time for any period of time.

In operation, control loop 120 monitors first environment 112, such as aserver of a cloud computing platform, based on one or more control loopparameters 164 (e.g., policies associated with the operation of theserver hosted by the cloud computing platform). Control loop 120 sendscontrol loop parameters 164 to adaptation control loop 140. Adaptationcontrol loop 140 monitors second environment 114, such as the securityof the cloud computing platform that hosts the server, collects datafrom second environment 114, and analyzes the collected data based onone or more adaptation parameters 184 (e.g., policies associated withthe security of the cloud computing platform). Adaptation control loop140 makes decisions regarding self-adjustment actions to be taken bycontrol loop 120 and sends recommended adjustments 188 to control loop120. Control loop 120 then determines whether to automatically adjustcontrol loop parameters 164 based on recommended adjustments 188received from adaptation control loop 140. In the event control loop 120determines to automatically adjust control loop parameters 164, controlloop 120 collects data from first environment 112, analyzes thecollected data, and initiates one or more actions bused at least in parton adjusted control loop parameters 168.

As such, system 100 of FIG. 1A automatically self-adjusts a controlloop, which may allow the otherwise static control loop to better reactto changes in overall conditions.

FIG. 1B illustrates additional details of system 100 of FIG. 1A. System100 of FIG. 1B includes control loop 120, adaptation control loop 140, acontrol loop database 160. and an adaptation database 180, which areconnected by network 110. Control loop 120 and control loop database 160are included in first environment 112 and adaptation control loop 140and adaptation database 180 are included in second environment 114.Second environment 114 may be external to and separate from firstenvironment 112.

First environment 112 is any environment that can be monitored bycontrol loop 120. First environment may be a component of a VNF, such asa server or router. Second environment 114 is any environment that canbe monitored by adaptation control loop 140. Second environment 114 maybe a service provided by a VNF, such as a security service. Secondenvironment 114 may engulf first environment 112. For example, secondenvironment 114 may be a cloud environment, and first environment 112may be a server that is a component of the cloud environment.

Control loop 120 may be a slave to adaptation control loop 140 such thatthe decisions made by adaptation control loop 140 control over thedecisions made by control loop 120. Control loop 120 may be a master toadaptation control loop 140 such that the decisions made by control loop120 control over the decisions made by adaptation control loop 140.Control loop 120 may include adaptation control loop 140 such thatcontrol loop 120 and adaptation control loop 140 are considered a singlecontrol loop.

Control loop 120 includes an interface 122, a memory 124, and aprocessor 120, which may be components of computer system 400 of FIG. 4.Memory 124 includes a monitoring engine 130 and a decision engine 136.Adaptation control loop 140 includes an interface 142, a memory 144, anda processor 146, which may be components of computer system 400. Memory144 includes a monitoring engine 150 and a recommendation engine 156.Control loop database 160 includes first data 162, control loopparameters 164, and adjusted control loop parameters 168. Adaptationdatabase 180 includes second data 182, adaptation parameters 184, andrecommended adjustments 188. As discussed above, system 100 or portionsthereof may be associated with entity 105, which may include any entity,such as a business or company, that uses control loops. The elements ofsystem 100 may be implemented using any suitable combination ofhardware, firmware, and software.

Network 110 of system 100 is private network that connects components ofentity 105. Although this disclosure shows network 110 as being aparticular kind of network, this disclosure contemplates any suitablenetwork. One or more portions of network 110 may include an ad hocnetwork, an intranet, an extranet, a virtual private network (VPN), alocal area network (LAN), a wireless LAN (WLAN), a wide area network(WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), aportion of the Internet, a portion of the Public Switched TelephoneNetwork (PSTN), a cellular telephone network, a combination of two ormore of these, or other suitable types of networks. Network 110 mayinclude one or more networks. Network 110 may be any communicationsnetwork, such as a private network, a public network, a connectionthrough Internet, a mobile network, a WI-FI network, etc. One or morecomponents of system 100 may communicate over network 110. For example,control loop 120 may communicate over network 110, including receivingdata from adaptation control loop 140, control loop database 160, and/oradaptation database 180.

Interface 122 of control loop 120 represents any suitable computerelement that can receive information from network 110, transmitinformation through network 110, perform suitable processing of theinformation, communicate to other components (e.g., adaptation controlloop 140) of system 100, or any combination of the preceding. Interface122 may receive recommended adjustments 188 from adaptation database 180via network 110, for example. Interface 122 may transmit adjustedcontrol loop parameters 168 to control loop database 160, as anotherexample. Interface 122 represents any port or connection, real orvirtual, including any suitable combination of hardware, firmware, andsoftware, including protocol conversion and data processingcapabilities, to communicate through an LAN, a WAN, or othercommunication system that allows entity 105 associated with system 100to exchange information between components of system 100.

Memory 124 of control loop 120 stores, permanently and/or temporarily,received and transmitted information, as well as system software,control software, other software for control loop 120, and a variety ofother information. Memory 124 may store information for execution byprocessor 126. Memory 124 stores monitoring engine 130 and decisionengine 136 of control loop 120. Control loop 120 may store one or moredatabases (e.g., control loop database 160). Memory 124 includes any oneor a combination of volatile or non-volatile local or remote devicessuitable for storing information. Memory 124 may include Random AccessMemory (RAM), Read-only Memory (ROM), magnetic storage devices, opticalstorage devices, or any oilier suitable information storage device or acombination of these devices. Memory 124 may include any suitableinformation for use in the operation of control loop 120. Additionally,memory 124 may be a component external to (or may be partially externalto) control loop 120. Memory 124 may be located at any location suitablefor memory 124 to communicate with control loop 120.

Processor 126 of control loop 120 controls certain operations of controlloop 120 by processing information received from interlace 122 andmemory 124 or otherwise accessed by processor 126. Processor 126communicatively couples to interface 122 and memory 124. Processor 126may include any hardware and/or software that operates to control andprocess information. Processor 126 may be a programmable logic device, amicrocontroller, a microprocessor, any suitable processing device, orany suitable combination of the preceding. Additionally, processor 126may be a component external to control loop 120. Processor 126 may be inany location suitable for processor 126 to communicate with control loop120 Processor 126 controls the operation of monitoring engine 130 anddecision engine 136.

Monitoring engine 130 of control loop 120 is a computer program thatmonitors first environment 112. Monitoring engine 130 may receivecontrol loop parameters 164 (e.g., policies) from control loop database160 and monitor first environment 112 based on control loop parameters164. Monitoring engine 130 collects first data 162 from firstenvironment 112. Control loop parameters 164 received by monitoringengine 130 may include policies for data collection, such as what datashould be collected by monitoring engine 130 and bow often monitoringengine 130 should collect data, and monitoring engine 130 may collectfirst data 162 based on these data collection policies. Monitoringengine 130 analyzes first data 162 collected from first environment 112.Control loop parameters 164 received by monitoring engine 130 mayinclude policies for data analysis, such as what type of analysis toperform and at what depth the analysis should be performed, andmonitoring engine 130 may analyze first data 162 based on these dataanalysis policies.

Decision engine 136 of control loop 120 is a computer program that makesdecisions for control loop 120. Decision engine 136 may make decisionsbased on the data analysis performed by monitoring engine 130. Decisionengine 136 may determine what action control loop 120 will take based onthe data analysis. Decision engine 136 may then take the determinedaction. Actions taken by decision engine 136 may include sending amessage to a management system, recommending a remedial measure, orinstalling a software patch to a software program associated with findenvironment 112.

Decision engine 136 of control loop 120 may make decisions based oninformation received from adaptation control loop 140 Decision engine136 may receive one or more recommended adjustments 188 from adaptationcontrol loop 140 and adjust one or more control loop parameters 164based on recommended adjustments 188. Decision engine 136 may thentransmit adjusted control loop parameters 168 to monitoring engine 130so that monitoring engine 130 can recommend adjustments to lire adjustedcontrol loop parameters 168.

Interface 142 of adaptation control loop 140 represents any suitablecomputer element that can receive information from network 110, transmitinformation through network 110, perform suitable processing of theinformation, communicate to other components (e.g., adaptation database180) of system 100, or any combination of the preceding. Interface 142may receive second data 182 from second environment 114 via network 110.Interface 142 may transmit second data 182 to adaptation database 180via network 110. Interface 142 represents any port or connection, realor virtual, including any suitable combination of hardware, firmware,and software, including protocol conversion and data processingcapabilities, to communicate through a LAN, a WAN, or othercommunication system that allows the entity associated with system 100to exchange information between components of system 100.

Memory 144 of adaptation control loop 140 stores, permanently and/ortemporarily, received and transmitted information, as well as systemsoftware, control software, other software for adaptation control loop140, and a variety of other information. Memory 144 may storeinformation for execution by processor 146. Memory 144 stores monitoringengine 150 and recommendation engine 156.

Memory 144 includes any one or a combination of volatile or non-volatilelocal or remote devices suitable for storing information. Memory 144 mayinclude RAM, ROM, magnetic storage devices, optical storage devices, orany other suitable information storage device or a combination of thesedevices. Memory 144 may include any suitable information for use in theoperation of adaptation control loop 140. Additionally, memory 144 maybe a component external to (or may be partially external to) adaptationcontrol loop 140. Memory 144 may be located at any location suitable formemory 144 to communicate with adaptation control loop 140.

Processor 146 of adaptation control loop 140 controls certain operationsof adaptation control loop 140 by processing information received frominterface 142 and memory 144 or otherwise accessed by processor 146.Processor 146 communicatively couples to interface 142 and memory 144.Processor 146 includes any hardware and/or software that operates tocontrol and process information Processor 146 may be a programmablelogic device, a microcontroller, a microprocessor, any suitableprocessing device, or any suitable combination of the preceding.Additionally, processor 146 may be a component external to adaptationcontrol loop 140. Processor 146 may be in any location suitable forprocessor 146 to communicate with adaptation control loop 140 Processor146 controls the operation of monitoring engine 150 and recommendationengine 156.

Monitoring engine 150 of adaptation control loop 140 is a computerprogram that monitors second environment 114. Monitoring engine 150 mayreceive adaptation control loop parameters 184 (e.g., policies) fromadaptation database 180 and monitor second environment 114 based catadaptation parameters 184 Monitoring engine 150 may monitor secondenvironment 114 using a microservice, a neural network, artificialintelligence (AI), and/or machine learning (ML).

Monitoring engine 150 collects second data 182 from second environment114. Adaptation parameters 184 received by monitoring engine 150 mayinclude policies for data collection, such as what data should becollected by monitoring engine 150 and how often monitoring engine 150should collect data, and monitoring engine 150 may collect second data182 based on these data collection policies. Monitoring engine 150analyzes second data 182 collected front second environment 114.Adaptation parameters 184 received by monitoring engine 150 may includepolicies for data analysis, such as what type of analysis to perform andat what depth the analysis should be performed, and monitoring engine150 may analyze second data 182 based on these data analysis policies.

Recommendation engine 156 of adaptation control loop 140 is a computerprogram that recommends adjustments 188 to be made to control loopparameters 164 of control loop 120. Recommendation engine 156 mayreceive analyzed second data 182 from monitoring engine 150 andrecommend adjustments 188 based on the received analyzed second data182. Recommendation engine 156 may determine recommended adjustments 188based on the received analyzed second data 182. Recommendation engine156 may determine recommended adjustments 188 based on state or historydata of adaptation control loop 140. Recommendation engine 156 maytransmit one or more recommended adjustments 188 to control loop 120.

Control loop database 160 is any database that can store data associatedwith system 100. Control loop database 160 may store certain types ofinformation for entity 105. Control loop database 160 may be a singledatabase or may include multiple databases. Control loop database 160stores first data 162, control loop parameters 164, and adjusted controlloop parameters 168. Control loop database 160 may also storeinformation that may be used by control loop 120 to determine currentand/or future control loop decisions. This information may include stateor history data (e.g., past action decisions of control loop 120).

First data 162 of control loop database 160 includes any data receivedby control loop 120 from first environment 112. First data 162 may becollected from first environment 112 in accordance with one or morecontrol loop parameters 164, such as data collection policies. Firstdata 162 may be collected in real-time (e.g., within milliseconds) sothat it is immediately available for analysis by monitoring engine 130.First data 162 may be collected in accordance with a temporal frequency(e.g., every second, minute, hour, or day). First data 162 may be eventdata or performance data received from first environment 112 (e.g., aVNF router). Control loop parameters 164 of control loop database 160are any predetermined parameters that may be used by monitoring engine130 and decision engine 136. Control loop parameters 164 may include oneor more policies (e.g., data collection policies and/or data analysispolicies), one or more policy sets (e.g., a policy set for anorchestrator and a policy set for a controller), one or more codeportions (e.g., a data collection code portion), and one or morethreshold values (e.g., a maximum toad capacity for a server). Adjustedcontrol loop parameters 168 are control loop parameters 164 that havebeen adjusted in accordance with recommended adjustments 188 receivedfrom adaptation control loop 140. Adjusted control loop parameters 168may be created by adding at least one new parameter to control loopparameters 164, deleting at least one of the one or more control loopparameters 164, or replacing at least one control loop parameter 164with an alternate parameter.

Control loop database 160 includes any one or a combination of volatileor non-volatile local or remote devices suitable for storinginformation. Control loop database 160 may include RAM, ROM, magneticstorage devices, optical storage devices, or any other suitableinformation storage device or a combination of these devices. Althoughcontrol loop database 160 is shown separate from control loop 120,adaptation control loop 140, and adaptation database 180 in FIG. 1B,control loop database 160 may be in any location suitable forcommunication with control loop 120, adaptation control loop 140, andadaptation database 180. Control loop database 160 may be externallylocated from system 100. Control loop database 160 may be in controlloop 120, adaptation control loop 140, or adaptation database 180.Although described as a database, control loop database 160 may beimplemented as any suitable type of volatile or non-volatile memory.Control loop database 160 may include one or more interfaces and/orprocessor.

Adaptation database 180 is am database that can store data associatedwith system 100. Adaptation database 180 may store certain types ofinformation for entity 105. Adaptation database 180 may be a singledatabase or may include multiple databases. Adaptation database 180stores second data 182, adaptation parameters 184, and recommendedadjustments. 188 Adaptation database 180 may also store information thatmay be used by adaptation control loop 140 to determine current and/orfuture control loop decisions This information may include state orhistory data (e.g., past action decisions of adaptation control loop140).

Second data 182 includes any data received by adaptation control loop140 from second environment 114. Second data 182 may be collected fromsecond environment 114 in accordance with one or more adaptationparameters 184, such as data collection policies. Second data 182 may becollected in real-time (e.g., within milliseconds) so that it isimmediately available for analysis by recommendation engine 150. Seconddata 182 may be collected. In accordance with a temporal frequency(e.g., every second, minute, hour, or day). Second data 182 may be aninternal operation condition, personal information, operating costs, orsecurity information received from second environment 114 (e.g., avirtual cloud service few an entity). Adaptation parameters 184 ofadaptation database 180 are any predetermined parameters that may beused by monitoring engine 150 and recommendation engine 156. Adaptationparameters 184 may include one or more policies (e.g., data collectionpolicies and/or data analysis policies), one or more policy sets (e.g.,a policy set for an orchestrator and a policy set for a controller), oneor more code portions (e.g., a data collection code portion), and one ormore threshold values (e.g., a maximum operational cost for a VNF).Recommended adjustments 188 are adjustments to control loop parameters164 that have been determined by recommendation engine 156 of adaptationcontrol loop 140. Recommended adjustments 188 may includerecommendations to add at least one new parameter to control loopparameters 164, delete at least one of the one or more control loopparameters 164, or replace at least one control loop parameter 164 withan alternate parameter.

Adaptation database 180 includes any one or a combination of volatile ornon-volatile local or remote devices suitable for storing information.Adaptation database 180 may include RAM, ROM, magnetic storage devices,optical storage devices, or any other suitable information storagedevice or a combination of these devices. Although adaptation database180 is shown separate from control loop 120, adaptation control loop140, and control loop database 160 in FIG. 1B, adaptation database 180may be in any location suitable for communication with control loop 120,adaptation control loop 140, and control loop database 160. Adaptationdatabase 180 may be externally located from system 100. Adaptationdatabase 180 may be in control loop 120, adaptation control loop 140, orcontrol loop database 160. Although described as a database, adaptationdatabase 180 may be implemented as any suitable type of volatile ornon-volatile memory. Adaptation database 180 may include one or moreinterfaces and/or processor.

Although FIG. 1B illustrates u particular arrangement of network 110,control loop 120, adaptation control loop 140, control loop database160, and adaptation database 180, this disclosure contemplates anysuitable arrangement of network 110, control loop 120, adaptationcontrol loop 140, control loop database 160, and adaptation database180. Two or more of control loop 120, adaptation control loop 140,control loop database 160, and adaptation database 180 may be connectedto each other directly, bypassing network 110. Two or more of network110, control loop 120, adaptation control loop 140, control loopdatabase 100, and adaptation database 180 may be physically or logicallyco-located with each other in whole or in part. Although FIG. 1Billustrates a particular number of networks 110, control loops 120,adaptation control loops 140, control loop databases 160, and adaptationdatabases 180, this disclosure contemplates any suitable number ofnetworks 110, control loops 120, adaptation control loops 140, controlloop databases 160, and adaptation databases 180.

FIG. 2 illustrates example control loop team modules 200 that may beused by the system of FIGS. 1A and 1B. Control loop team modules 200 arecomputer systems that may each include an interface, a memory, and aprocessor, which may be components of computer system 400. A controlloop team is a team of multiple control loops that work together toaccomplish a higher-level goal. Control loop teams can be composed ofcontrol loops with different functional categories (e.g., a performancecontrol loop, a security control loop, and a cost minimization controlloop). A control loop team may include control loop 120 and adaptationcontrol loop 140 of system 100 (see FIGS. 1A and 1B). Control loop teamsmay be composed of control loops in different locations, operating atdifferent times, operating in different network slices, and operating atdifferent applications and/or network layers. A lower-level control loopteam may be a member of a higher-level control loop team.

Control loop learn modules 200 of FIG. 2 include an intercommunicationmodule 220, a teaming module 230, a sequencing module 240, a disputemodule 250, a learning module 260, a logging module 270, and a database280 connected by a control loop team module communication bus 210. Oneor more control loop team modules 200 may be used by a control loop teamthat includes control loop 120 and adaptation control loop 140 of FIGS.1A and 1B.

Intercommunication module 220 finds, identifies, and communicates withand between all other control loops of a control loop team.Intercommunication module 220 may find, identify, and communicate withand between control loop 120 and adaptation control loop 140 of system100. Intercommunication module 220 may utilize intercommunicationparameters (e.g., predetermined intercommunication policies) tofacilitate communication bet ween control loops of a control loop team.

Teaming module 230 makes decisions and enforces policies and constraintsin accordance with the higher-level control loop team's goals andbehavior. Teaming module 230 may utilize one or more parameters (e.g.,predetermined teaming policies) to enforce control loop parameters(e.g., predetermined control loop policies) of one or more control loopsof the control loop team, learning module 230 may determine that a firstcontrol loop of a control loop team (e.g., control loop 120) is a slaveto a second control loop of a control loop team (e.g., adaptationcontrol loop 140). Teaming module 230 may determine that a first controlloop of a control loop team (e.g., control loop 120) is a master of allother control loops in the control loop team.

Sequencing module 240 determines the correct sequencing of actionsbetween control loops of a control team. Sequencing module 240 maydetermine the correct sequencing of actions based on one or moresequencing parameters (e.g., predetermined sequencing policies).Sequencing module 240 may determine the correct sequencing of actionsbasal on analysis of the actions and/or time-based dependencies.Sequencing module 240 may sequence an action to be taken by control loop120 before or after an action to be taken by adaptation control loop140.

Dispute module 250 determines an outcome when decisions between controlloop team members involve conflicting aims or results. Dispute module250 may determine an outcome based on one or more dispute parameters(e.g., predetermined dispute polices), analysis of the disputes, and/orpredetermined priorities. Dispute module 250 may determine an outcomebetween a performance control loop and a cost control loop. Aperformance control loop may want to scale up due to demandconsiderations, whereas a cost control loop may want to limit the scaleup due to cost considerations. Dispute module 250 may use disputepolicies to determine whether and how much to scale up. Dispute module250 may determine an outcome based at least in part on whether one ormore control loops of the control loop team are designated as master orslave.

Learning module 260 monitors and analyzes outcomes to flag items forfurther analysis, learning, and/or automated learning (e.g., learningbased on AI/ML techniques). Learning module 260 may monitor an outcomedetermined by dispute module 250 and flag the outcome for furtheranalysis. Logging module 270 logs important items for potentialtroubleshooting and record keeping purposes. Logging module 270 may logone or more actions taken by one or more control loops of the controlloop team. Database 280 stores data for control loop team modules 200.Database 280 may store parameters (e.g., special controlling data, code,and policies) for one or more control loop team modules 200. Database280 may store sequencing parameters for sequencing module 240 anddispute parameters for dispute module 250. Database 280 may storedecisions determined by teaming module 230.

Control loop team module communication bus 210 includes hardware,software, or both coupling two or more control loop team modules 200 toeach other. Control loop team module communication bus 210 may includean Accelerated Graphics Port (AGP) or other graphics bus, an EnhancedIndustry Standard Architecture (EISA) bus, a front-side bus (FSB), aHYPERTRANSPORT (HT) interconnect, an Industry Standard Architecture(ISA) bus, an INFINIBAND interconnect, a low-pin-count (LPC) bus, amemory bus, a Micro Channel Architecture (MCA) bus, a PeripheralComponent Interconnect (PCI) bus, a PCI-Express (PCIe) bus, a serialadvanced technology attachment (SATA) bus, a Video Electronics StandardsAssociation local (VLB) bus, or another suitable bus or a combination oftwo or more of these. Control loop team module communication bus mayinclude one or more buses 210, where appropriate. Although thisdisclosure describes and illustrates a particular bus, this disclosurecontemplates any suitable bus or interconnect.

FIG. 3 illustrates an example method for adjusting a control loop.Method 300 begins at step 310. At step 320, a control loop having aninterface, a memory, and a processor monitors a first environment. Thefirst environment may be a server of a cloud computing platform. Thecontrol loop has one or more predetermined control loop parameters. Thepredetermined control loop parameters may include a policy, a policyset, a code portion (e.g., a data collection code portion or a dataanalysis code portion), and a threshold value. The control loop maymonitor the first environment in accordance with the predeterminedcontrol loop parameters.

At step 330, the control loop receives first data from the firstenvironment The first data may include event data or performance data ofa VNF server. The one or more predetermined control loop parameters mayinclude data collection policies, and the control loop may receive thefirst data in accordance with the data collection policies. The controlloop may include data analysis policies, and the control loop mayanalyze the first data in accordance with the data analysis policies.The control loop may initiate one or more actions based on the analyzedfirst data. The control loop may send the predetermined control loopparameters to an adaptation control loop.

At step 340, the control loop receives information from the adaptationcontrol loop. The control loop and the adaptation control loop may bepart of a control loop team The control loop and the adaptation controlloop may be different components of a single control loop. Theinformation received by the control loop includes recommendedadjustments to the predetermined control loop parameters. The adaptationcontrol loop may monitor a second environment based on one or moreadaptation parameters (e.g., predetermined adaptation policies), collectsecond data (e.g., an internal operating condition) from the secondenvironment (e.g., a virtual cloud service), analyze the second data,and determine recommended adjustments to the control loop parametersbased on the analyzed second data The adaptation control loop may thentransmit the recommended adjustments to the control loop.

At step 350, the control loop determines whether to adjust one or morepredetermined control loop parameters based at least in part on theinformation received from the adaptation control loop. The control loopmay automatically determine to self-adjust its predetermined controlloop parameters when recommended adjustments are received from theadaptation control loop. The control loop may decide whether toself-adjust its predetermined control loop parameters when recommendedadjustments are received from the adaptation control loop. For example,the control loop may decide to adjust its control loop parameters if ateaming module (e.g., teaming module 230 of FIG. 2) decides to enforcethe recommended adjustments. As another example, the control loop maydecide not to adjust its control loop parameters if a dispute module(e.g., dispute module 250 of FIG. 2) prioritizes the original controlloop parameters over the recommended adjustments.

If the control loop determines to adjust its predetermined control loopparameters, method 300 advances to step 350, where the control loopautomatically self-adjusts its predetermined control loop parameters.Automatically adjusting the predetermined control loop parameters mayinclude adding at least one new parameter to the one or morepredetermined control loop parameters, deleting at least one of the oneor more predetermined control loop parameters, or replacing at least oneof the one or more predetermined control loop parameters with one ormore alternate parameters. Automatically adjusting the predeterminedcontrol loop parameters may include switching policy sets (e.g., frompolicy set no. 1 to alternate policy set no. 8), switching policieswithin a set (e.g., from policy 5A in policy set no. 3 to alternatepolicy 5C in policy set no. 3), changing a code portion to another codeportion (e.g., from subroutine/object/microservice/neural networkrepresented by #XYZ to alternate subroutine/object/microservice/neuralnetwork represented by #ABC), or adding or dropping code portions,analysis algorithms, policies, policy sets, or actors. If the controlloop determines not to adjust its predetermined control loop parameters,method 300 advances to step 390, where method 300 ends.

After automatically adjusting the predetermined control loop parametersat step 360, method 300 moves to step 370, where the control loopdecides whether to initiate an action based on the first data collectedfrom the first environment and the adjusted control loop parameters. Thecontrol loop may monitor the first environment based on the adjustedcontrol loop parameters, collect first data from the first environment,analyze the first data, and determine whether to initiate an actionbased on the analyzed first data. If the control loop determines toinitiate an action, method 300 moves to step 380, where the action isinitiated. The initiated action may include sending a message to amanagement system, recommending a remedial measure, or installing asoftware patch to a software program associated with the firstenvironment (e.g., installing a software patch on a VNF server) Method300 then advances to step 390, where method 300 ends. If at step 370 thecontrol loop decides, not to initiate an action based on the first datacollected from the first environment and the adjusted control loopparameters, method 300 skips step 380 and proceeds to step 390, wheremethod 300 ends.

Modifications, additions, or omissions may be made to method 300depicted in FIG. 3 Method 300 may include more, fewer, or other steps.Method 300 may include receiving, by an adaptation control loop, seconddata from a second environment. Method 300 may include monitoring, by aperformance control loop, a third environment and receiving, by theperformance control loop, third data associated with the thirdenvironment. Method 300 may include sequencing, by a sequencing module,actions initiated by the control loop and the performance control loop.Steps may also be performed in parallel or in any suitable order. Whilediscussed as specific components completing the steps of method 300, anysuitable component of system 100 may perform any step of method 300.

FIG. 4 illustrates an example computer system that may be used by thesystems and methods described herein For example, any of network 110,control loop 120, adaptation control loop 140, control loop database160, adaptation control loop database 180, and control loop team modules200 may include one or more interface(s) 410, processing circuitry 420,memory(ies) 430, and/or other suitable element(s) Interlace 410 (e.g.,interface 122, 142, or 162 of FIG. 1B) receives input, sends output,processes the input and/or output, and/or performs other suitableoperation Interface 410 may comprise hardware and/or software.

Processing circuitry 420 (e.g., processor 126, 146, or 166 of FIG. 1B)performs or manages the operations of the component. Processingcircuitry 420 may include hardware and/or software. Examples of aprocessing circuitry include one or more computers, one or moremicroprocessors, one or more applications, etc. In certain embodiments,processing circuitry 420 executes logic (e.g., instructions) to performactions (e.g., operations), such as generating output from input. Thelogic executed by processing circuitry 420 may be encoded in one or moretangible, non-transitory computer readable media (such as memory 430).For example, the logic may comprise a computer program, software,computer executable instructions, and/or instructions capable of beingexecuted by a computer. In particular embodiments, the operations of theembodiments may be performed by one or more computer readable mediastoring, embodied with, and/or encoded with a computer program and/orhaving a stored and/or an encoded computer program.

Memory 430 (or memory unit) stores information. Memory 430 (e.g., memory124, 144, or 164 of FIG. 1B) may comprise one or more non-transitory,tangible, computer-readable, and/or computer-executable storage media.Examples of memory 430 include computer memory (for example, RAM orROM), mass storage media (for example, a hard disk), removable storagemedia (for example, a Compact Disk (CD) or a Digital Video Disk (DVD)),database and/or network storage (for example, a server), and/or othercomputer-readable medium.

Herein, a computer-readable non-transitory storage medium or media mayinclude one or more semiconductor-based or other integrated circuits(ICs) (such us field-programmable gate arrays (FPGAs) orapplication-specific ICs (ASICs)), hard disk drives (HDDs), hybrid harddrives (HHDs), optical discs, optical disc drives (ODDs),magneto-optical discs, magneto-optical drives, floppy diskettes, floppydisk drives (FDDs), magnetic tapes, solid-state drives (SSDs).RAM-drives, SECURE DIGITAL cards or drives, any other suitablecomputer-readable non-transitory storage media, or any suitablecombination of two or more of these, where appropriate. Acomputer-readable non-transitory storage medium may be volatile,non-volatile, or a combination of volatile and non-volatile, whereappropriate.

Herein, “or” is inclusive and not exclusive, unless expressly indicatedotherwise or indicated otherwise by context Therefore, herein. “A or B”means “A, B, or both,” unless expressly indicated otherwise or indicatedotherwise by context. Moreover, “and” is both joint and several, unlessexpressly indicated otherwise or indicated otherwise by context.Therefore, herein, “A and B” means “A and B, jointly or severally,”unless expressly indicated otherwise or indicated otherwise by context.

The scope of this disclosure encompasses all changes, substitutions,variations, alterations, and modifications to the example embodimentsdescribed or illustrated herein that a person having ordinary skill inthe art would comprehend. The scope of this disclosure is not limited tothe example embodiments described or illustrated herein. Moreover,although this disclosure describes and illustrates respectiveembodiments herein as including particular components, elements,feature, functions, operations, or steps, any of these embodiments mayinclude any combination or permutation of any of the components,elements, features, functions, operations, or steps described orillustrated anywhere herein that a person having ordinary skill in theart would comprehend. Furthermore, reference in the appended claims toan apparatus or system or a component of an apparatus or system beingadapted to, arranged to, capable of, configured to, enabled to, operableto, or operative to perform a particular function encompasses thatapparatus, system, component, whether or not it or that particularfunction is activated, turned on, or unlocked, as long as thatapparatus, system, or component is so adapted, arranged, capable,configured, enabled, operable, or operative. Additionally, although thisdisclosure describes or illustrates particular embodiments as providingparticular advantages, particular embodiments may provide none, some, orall of these advantages.

What is claimed is:
 1. A method, comprising: monitoring, by anadaptation control loop comprising a processor and a memory, a secondenvironment; receiving, by the adaptation control loop and in responseto the monitoring of the second environment, second data from the secondenvironment; sending to a control loop, by the adaptation control loop,information associated with: one or more predetermined adaption policiesof the adaptation control loop, and the second data, wherein the controlloop automatically self-adjusts predetermined control loop parametersregarding a process in a first environment based at least in part on theinformation received from the adaptation control loop.
 2. The method ofclaim 1, wherein the predetermined control loop parameters comprise atleast one of: a policy; a data collection code portion; and a thresholdvalue.
 3. The method of claim 1, wherein automatically self-adjustingthe predetermined control loop parameters comprises at least one of:adding at least one new parameter to the predetermined control loopparameters; deleting at least one of the predetermined control loopparameters; and replacing at least one of the predetermined control loopparameters with one or more alternate parameters.
 4. The method of claim1, wherein: the first environment is a virtual network function (VNF);the second environment is a virtual cloud service for an entity; and thesecond data comprises at least one of: an internal operating conditionof the entity; personal information of the entity; operating costs ofthe entity; and security information of the entity.
 5. The method ofclaim 1, wherein the information is further associated with at least oneof: a microservice; a neural network; artificial intelligence; andmachine learning.
 6. The method of claim 1, wherein the control loopcomprises the adaptation control loop.
 7. The method of claim 1, whereinthe control loop is a slave to the adaptation control loop.
 8. Anon-transitory, machine-readable medium, comprising executableinstructions that, when executed by an adaptation control loopimplemented by a processing system including a processor, facilitateperformance of operations, the operations comprising: monitoring asecond environment; receiving, in response to monitoring the secondenvironment, second data from the second environment; and sending, to acontrol loop, information comprising: one or more predeterminedadaptation policies of the adaptation control loop, and the second data,wherein the control loop automatically self-adjusts predeterminedcontrol loop parameters regarding a process in a first environment basedat least in part on the information received from the adaptation controlloop.
 9. The non-transitory, machine-readable medium of claim 8, whereinthe predetermined control loop parameters comprise at least one of: apolicy; a data collection code portion; and a threshold value.
 10. Thenon-transitory, machine-readable medium of claim 8, whereinautomatically self-adjusting the predetermined control loop parameterscomprises at least one of: adding at least one new parameter to thepredetermined control loop parameters; deleting at least one of thepredetermined control loop parameters; and replacing at least one of thepredetermined control loop parameters with one or more alternateparameters.
 11. The non-transitory, machine-readable medium of claim 8,wherein: the first environment is a virtual network function (VNF); thesecond environment is a virtual cloud service for an entity; and thesecond data comprises at least one of: an internal operating conditionof the entity; personal information of the entity; operating costs ofthe entity; and security information of the entity.
 12. Thenon-transitory, machine-readable medium of claim 8, wherein theinformation is further associated with at least one of: a microservice;a neural network; artificial intelligence; and machine learning.
 13. Thenon-transitory, machine-readable medium of claim 8, wherein the controlloop comprises the adaptation control loop.
 14. The non-transitory,machine-readable medium of claim 8, wherein the control loop is a slaveto the adaptation control loop.
 15. The non-transitory, machine-readablemedium of claim 8, wherein the processing system comprises a pluralityof processors.
 16. A device implementing an adaptation control loop, thedevice comprising: a processing system including a processor; and amemory that stores executable instructions that, when executed by theprocessing system, facilitate performance of operations, the operationscomprising: monitoring a second environment; receiving, in response tomonitoring the second environment, second data from the secondenvironment; and sending, to a control loop, information comprising: oneor more predetermined adaptation policies of the adaptation controlloop, and the second data, wherein the control loop automaticallyself-adjusts one or more predetermined control loop parameters regardinga process in a first environment based at least in part on theinformation received from the adaptation control loop.
 17. The device ofclaim 16, wherein the one or more predetermined control loop parameterscomprise at least one of: a policy; a data collection code portion; anda threshold value.
 18. The device of claim 16, wherein the automaticallyself-adjusting the one or more predetermined control loop parameterscomprises at least one of: adding at least one new parameter to the oneor more predetermined control loop parameters; deleting at least one ofthe one or more predetermined control loop parameters; and replacing atleast one of the one or more predetermined control loop parameters withone or more alternate parameters.
 19. The device of claim 16, wherein:the first environment is a virtual network function (VNF); the secondenvironment is a virtual cloud service for an entity; and the seconddata comprises at least one of: an internal operating condition of theentity; personal information of the entity; operating costs of theentity; and security information of the entity.
 20. The device of claim16, wherein the control loop is a slave to the adaptation control loopand wherein the processing system comprises a plurality of processors.